//
// Created by 李传智 on 2018/4/12.
//

#ifndef ANDSDK_IDEMUX_H
#define ANDSDK_IDEMUX_H

#include <cstdint>
#include "VideoData.h"
#include "VideoThread.h"
#include "IObserver.h"
#include "CodecParameter.h"

// 解封装接口
class IDemux : public IObserver {

public:

    // 打开文件，或者流媒体 rtsp, rmtp, http
    virtual bool open(const char *url) = 0;

    // position 0.0~1.0
    virtual bool seek(double position) = 0;

    virtual void close() = 0;

    // 读取一帧数据，数据由调用者清理
    virtual VideoData read() = 0;

    // 获取视频参数
    virtual CodecParameter getVideoCodecParameters() = 0;

    // 获取音频参数
    virtual CodecParameter getAudioCodecParameters() = 0;

    // 总时长 (毫秒）
    int64_t duration = 0;

protected:

    virtual void main();
};


#endif //ANDSDK_IDEMUX_H
